package com.spic.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.spic.common.core.annotation.Excel;
import com.spic.system.annotation.Range;
import com.spic.system.config.Group;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 数据治理
 * 人员汇总表
 */
@Data
public class UserAll implements Serializable
{
    private static final long serialVersionUID = 1L;
    //人员编码
    @Excel(name = "人员编码")
    private String  personnelCode;

    // 数据来源 0安全平台; 1HR系统同步
    private Integer source;
    //部门id
    private Long deptId;

    /** 部门及其下属部门 */
    private List<Long> deptIds;
    private String deptName;
    //父部门id
    private Long parentDeptId;

    private String parentDeptName;

    //姓名
    @Excel(name = "姓名")
    private String  name;
    //性别
    @Excel(name = "性别")
    @NotBlank(message = "性别为空")
    private String  sex;
    //年龄
    @Excel(name = "年龄")
    @NotBlank(message = "年龄为空", groups = Group.HRGroup.class)
    @Range(message = "年龄有误", groups = Group.HRGroup.class)
    private String age;
    //出生日期
    @Excel(name = "出生日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date birthday;
    //民族
    @Excel(name = "民族")
    private String  nationality;
    //籍贯（自定义）
    @Excel(name = "籍贯(自定义)")
    private String  hometown;
    //出生地
    @Excel(name = "出生地")
    private String  birthplace;
    //参加工作日期
    @Excel(name = "参加工作日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date  attendWorkDate;
    //调整社会工龄(年)
    @Excel(name = "调整社会工龄(年)")
    private String  nickName;
    //工龄1
    @Excel(name = "工龄1")
    private String  workingAge;
    //政治面貌
    @Excel(name = "政治面貌")
    private String  politicalStatus;
    //入党(团)日期
    @Excel(name = "入党(团)日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date  joinPartyDate;
    //学历
    @Excel(name = "学历")
    private String  education;
    //最高学历毕业学校
    @Excel(name = "最高学历毕业学校")
    private String  graduatedSchool;
    //最高学历毕业专业
    @Excel(name = "最高学历毕业专业")
    private String  highestDegreeGraduate;
    //学位
    @Excel(name = "学位")
    private String  degree;
    //全日制最高学历
    @Excel(name = "全日制最高学历")
    @NotBlank(message = "全日制最高学历为空", groups = Group.HRGroup.class)
    private String  fullTimeDegree;
    //在职教育学历
    @Excel(name = "在职教育学历")
    private String  onthejobDegree;
    //初始学历
    @Excel(name = "初始学历")
    private String  initialEducation;
    //专业技术职务
    @Excel(name = "专业技术职务")
    private String  position;
    //专业技术等级
    @Excel(name = "专业技术等级")
    private String  technicalGrade;
    //专业技能等级
    @Excel(name = "专业技能等级")
    private String  skillLevel;
    //双通道梯级序列
    @Excel(name = "双通道梯级序列")
    private String  dualChannelSequence;
    //外文名
    @Excel(name = "外文名")
    private String  foreignName;
    //证件类型
    @Excel(name = "证件类型")
    @NotBlank(message = "证件类型为空", groups = Group.HRGroup.class)
    private String  typeofCertificate;
    //证件号码
    @Excel(name = "证件号码")
    @NotBlank(message = "证件号码为空", groups = Group.HRGroup.class)
    private String  documentNumber;
    //户口性质
    @Excel(name = "户口性质")
    private String  accountNature;
    //户口所在地
    @Excel(name = "户口所在地")
    private String  accountLocation;
    //户籍地址
    @Excel(name = "户籍地址")
    private String  residenceAddress;
    //国籍/地区
    @Excel(name = "国籍/地区")
    private String  region;
    //健康状况
    @Excel(name = "健康状况")
    private String  stateofhealth;
    //婚姻状况
    @Excel(name = "婚姻状况")
    private String  maritalStatus;
    //手机
    @Excel(name = "手机")
    @NotBlank(message = "手机号为空", groups = {Group.HRGroup.class,Group.SystemGroup.class})
    private String  phoneNumber;
    //电子邮件
    @Excel(name = "电子邮件")
    private String  email;
    //办公电话
    @Excel(name = "办公电话")
    private String  officePhone;
    //家庭电话
    @Excel(name = "家庭电话")
    private String  homePhone;
    //家庭地址(自定义)
    @Excel(name = "家庭地址(自定义)")
    private String  familyAddress;
    //通讯地址
    @Excel(name = "通讯地址")
    private String  mailingAddress;
    //邮政编码
    @Excel(name = "邮政编码")
    private String  zipCode;
    //血型
    @Excel(name = "血型")
    private String  bloodType;
    //档案号
    @Excel(name = "档案号")
    private String  fileNumber;
    //档案出生日期
    @Excel(name = "档案出生日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date  fileBirthday;
    //预计退休日期
    @Excel(name = "预计退休日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date  expectedRetireDay;
    //个人身份
    @Excel(name = "个人身份")
    private String  personalIdentity;
    //是否归侨
    @Excel(name = "是否归侨")
    private String  returnedOverseasChinese;
    //是否侨眷
    @Excel(name = "是否侨眷")
    private String  overseasChinese;
    //曾用名
    @Excel(name = "曾用名")
    private String  formerName;
    //是否归国留学人员
    @Excel(name = "是否归国留学人员")
    private String  returnees;
    //专业特长板块
    @Excel(name = "专业特长板块")
    private String  professionalSpecialties;
    //专业特长
    @Excel(name = "专业特长")
    private String  specialties;
    //特长
    @Excel(name = "特长")
    private String  specialty;
    //离退休日期
    @Excel(name = "离退休日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date  retirementDate;
    //备注
    @Excel(name = "备注")
    private String  remark;
    //运龄起始日期
    @Excel(name = "运龄起始日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date  ageStartDate;
    //运龄调整(年)
    @Excel(name = "运龄调整(年)")
    private String  ageAdjustment;
    //运龄(年)
    @Excel(name = "运龄(年)")
    private String  shippingAge;
    //ERP机构
    @Excel(name = "ERP机构")
    private String  erpOrganization;
    //ERP部门
    @Excel(name = "ERP部门")
    private String  erpDepartment;
    //运龄在岗
    @Excel(name = "运龄在岗")
    private String  ageonduty;
    //ps_psncode
    @Excel(name = "ps_psncode")
    private String  psPsncode;
    //累计海龄(月)
    @Excel(name = "累计海龄(月)")
    private String  cumulativeSeaAge;
    //计算海龄(年)
    @Excel(name = "计算海龄(年)")
    private String  calculateSeaAge;
    //是否境外工作
    @Excel(name = "是否境外工作")
    private String  workingAbroad;
    //是否从事本单位主营产业人员
    @Excel(name = "是否从事本单位主营产业人员")
    private String  mainIndustryPersonnel;
    //姓名全拼
    @Excel(name = "姓名全拼")
    private String  fullNameSpelling;
    //是否退二线
    @Excel(name = "是否退二线")
    private String  backOff;
    //预计退二线时间
    @Excel(name = "预计退二线时间")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date  estimatedWithdrawalTime;
    //是否符合退二线条件
    @Excel(name = "是否符合退二线条件")
    private String  eligibleForSecondtier;
    //产业分布
    @Excel(name = "产业分布")
    private String  industrialDistribution;

}
